import logging
import os


def get_logger(name: str) -> logging.Logger:
    """
    简单日志生成器：传入name，自动创建 name.log 日志文件
    :param name: 日志名称（将作为日志文件名，如传入"data_processor"则生成 data_processor.log）
    :return: 配置好的Logger实例
    """
    # 1. 日志保存目录（固定为当前目录下的 logs 文件夹，不存在则自动创建）
    log_dir = f"./logs"
    os.makedirs(log_dir, exist_ok=True)  # 目录不存在时创建，存在则跳过

    # 2. 日志文件路径（ logs/name.log ）
    log_file_path = os.path.join(log_dir, f"{name}.log")

    # 3. 日志格式（时间 + 日志名称 + 级别 + 内容，清晰够用）
    log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
    formatter = logging.Formatter(log_format)

    # 4. 获取Logger实例（避免重复创建处理器）
    logger = logging.getLogger(name)
    logger.setLevel(logging.INFO)  # 日志级别：默认INFO（可改DEBUG/WARNING）

    # 关键：如果已有处理器，直接返回（防止重复输出日志）
    if logger.handlers:
        return logger

    # 5. 添加「文件处理器」：日志写入到 name.log
    file_handler = logging.FileHandler(log_file_path, encoding="utf-8")
    file_handler.setFormatter(formatter)

    # 6. 添加「控制台处理器」：日志同时打印到控制台
    console_handler = logging.StreamHandler()
    console_handler.setFormatter(formatter)

    # 7. 绑定处理器到Logger
    logger.addHandler(file_handler)
    logger.addHandler(console_handler)

    return logger